var fs = require('fs')

function getFileByPath(fpath){
    return new Promise(
        function(resolve,reject){
            fs.readFile(fpath,'utf-8',(err,dataStr)=>{
                // if(err) throw err
                // 如果报错，进入if分支后，if后面的代码就没有必要执行了
                // if(err) throw err
                // console.log(dataStr)
                if(err) return reject(err)
                resolve(dataStr)
            })
        }
    )
}

//先读取文件1，在读取2，最后读取3
//注意：通过 .then指定回调函数的时候，成功的回调函数，必须传，但是，失败的回调，可以省略不传
// 这是一个错误的示范，干万不要这么用；硬是把法拉利，开成了拖拉机
/* getFileByPath('./files/1.txt')
    .then(function(dataStr){
        console.log(dataStr)

        getFileByPath('./files/2.txt')
        .then(function(dataStr){
            console.log(dataStr)
    
            getFileByPath('./files/3.txt')
            .then(function(dataStr){
                console.log(dataStr)
            })
            
        })

    }) */

    //读取 文件 1
    //在上一个 .then中，返回一个新的 promise实例，可以继续用下一个 .then来处理
//如果前面的 Promise执行失败，我们不想让后续的 Promise操作被终止，可以为每个 promise 指定失败的回调

    getFileByPath('./files/111.txt')
    .then(function(dataStr){
        console.log(dataStr)

        //读取 文件 2
        return getFileByPath('./files/2.txt')
    },function(err){
        console.log('this is a failure result --->'+err.message)

        /// return一个新的 Promise
        return getFileByPath('./files/2.txt')
    })
    .then(function(data){
        console.log(data)
        //读取 文件 3
        return getFileByPath('./files/3.txt')

    })
    .then(function(data){
        console.log(data)
    })
